<template>
	<view class="u-page">
		<view class="cell-page">
			<view class="u-page__item">
				<text class="u-page__item__title">基础信息</text>
				<u-cell-group>
					<u-cell title="集资参与人姓名:" :value="form.name" v-if="oneself"></u-cell>
					<u-cell title="继承权利人姓名:" :value="form.name1" v-if="!oneself"></u-cell>
					<u-cell title="集资参与人证件号:" :value="form.idCardNo" v-if="oneself"></u-cell>
					<u-cell title="继承权利人证件号:" :value="form.idCard1No" v-if="!oneself"></u-cell>
					<u-cell title="集资参与人银行卡号:" :value="form.bankCardNo" v-if="oneself"></u-cell>
					<u-cell title="继承权利人银行卡号:" :value="form.bankCard1No" v-if="!oneself"></u-cell>
					<u-cell title="联系电话:" :value="form.contactNumber"></u-cell>
				</u-cell-group>
			</view>
			<view class="u-page__item">
				<text class="u-page__item__title">集资信息</text>
				<u-cell-group>
					<!-- <u-cell title="实际投入金额" :value="formatNum(form.actualInvestmentAmount)"></u-cell>
          <u-cell title="实际返本利金额" :value="formatNum(form.actualAmountOfPrincipalAndInterestReturned)"></u-cell> -->
					<u-cell title="发放原则:" label="发放原则：根据国家、省、市处非领导机关的相关规定和要求，按照依法合规原则，将该案已追缴变现、相关法律手续健全、公检法各部门明确属性的资金，以“统一政策、统一比例、统一手续、统一程序”的原则向符合清退条件的集资人进行首次清退。对剩余由公安机关查封、冻结，但尚未确定权属的涉案资产，在确定权属后，开展二次清退返还给集资群众。"></u-cell>
					<u-cell title="返款比例:" :value="formatNum(form.resultList[0].rebateRatio)+'%'"></u-cell>
				</u-cell-group>
			</view>
		</view>
		<!-- <view>
			<u-checkbox-group @change="checkboxChange">
				<u-checkbox shape="circle" :name="true">
				</u-checkbox>
				<u-text type="success" text="我已阅读并同意隐私政策" @click="noticeShow = true"></u-text>
			</u-checkbox-group>
		</view> -->
		<!-- 		<view>
			<u-checkbox-group @change="checkboxChanges" >
				<u-checkbox shape="circle" :name="true" :checked = "true">
				</u-checkbox>
				<u-text type="success" text="我同意" @click="tongyiTipShow = true" :size="labelStyle.fontSize"></u-text>
			</u-checkbox-group>
		</view>
		
		<view  justify="center">
			<u-radio-group v-model="radio">
				<u-radio :customStyle="{marginRight: '16px'}" v-for="(item, index) in radiolist" :key="index" :labelSize="labelStyle.fontSize"
					:label="item.name" :name="item.value" @change="changeRadio">
				</u-radio>
			</u-radio-group>
		</view>
		 -->
		<u-row class="w-100 mt-4" justify="center">
			<u-col span="5" justify="center">
				<u-button shape="circle" :disabled="form.resultList[0].type == 4 && form.resultList[0].state == 2"
					@click="toPreMcPage">
					<view>上一步</view>
				</u-button>
			</u-col>
			<u-col span="5" justify="center">
				<u-button type="primary" shape="circle" @click="signTipShow = true">
					<view>拍照核验</view>
				</u-button>
			</u-col>
		</u-row>
		<u-row class="mt-4">
			<u-col span="12">
				<uni-steps :options="stepList" :active="currentStepIndex"></uni-steps>
			</u-col>
		</u-row>
		<u-popup :show="signShow" :round="10" mode="center">
			<Autograph ref="sign" @back="confirm"></Autograph>
		</u-popup>
		<view>
			<u-modal :show="tipShow" title="温馨提示">
				<view>
					<view class="font-tip">{{ tipText }}</view>
				</view>

				<u-button slot="confirmButton" @click="tipShow = false" type="success" shape="circle">已知晓</u-button>
			</u-modal>
		</view>
		<view>
			<u-modal :show="signTipShow" showCancelButton title="温馨提示" @confirm="goSign" @cancel="goNotSign" buttonReverse="true"
				cancelText="我不同意" confirmText="我同意" >
				<view>
					<view class="font-tip">{{ signTipText }}</view>
				</view>
			</u-modal>
		</view>
		<view>
			<u-modal :show="signTipShows" showCancelButton title="温馨提示" @confirm="goSign"  @cancel="toBackStep"
			confirmText="已知晓" cancelText="返回上一级" buttonReverse="true">
				<view>
					<view class="font-tip">{{ signTipText }}</view>
				</view>
			</u-modal>
		</view>
		<view>
			<u-modal :show="tongyiTipShow" title="温馨提示">
				<view>
					<view class="font-tip text-right mt-1">我们需要共享您所上传的信息给公安局</view>
				</view>
				<u-button slot="confirmButton" text="已知晓" @click="tongyiTipShow = false" type="success" shape="circle">
				</u-button>
			</u-modal>
		</view>

		<view>
			<u-modal :show="noticeShow" title="《用户协议》">
				<view>
					<scroll-view scroll-y="true" style="height: 350px;">
						<view class="font-tip text-indent">
							本用户协议（以下简称“本协议”）适用于成都安易迅科技有限公司运营和管理（以下简称“我们”，“本公司”）旗下的大部分产品与服务（以下简称“本产品”范围详见附录1），如果某项产品与服务有单独的服务规则，则该产品的服务规则优先适用。本协议是您（个人或单一实体）与本公司之间就使用本产品达成的具有法律约束力的法律协议。该法律协议包括但不限于本页面的全部条款、第8条的《隐私政策》以及我们针对特定产品部分功能单独发布的政策或服务规则等（若有）。



							请您在使用本产品之前仔细阅读下列条款。您下载、安装或使用产本品或者单击“
							我同意”表明您已经阅读本协议并充分理解、遵守本协议所有条款，包括涉及免除或者限制本公司责任的免责条款、用户权利限制条款、约定争议解决方式等，这些条款均用粗体字标注。如果您不同意本协议的全部或部分内容，请不要下载、安装和使用本产品。



							1. 权利声明

							1.1 知识产权。



							本公司拥有“本产品”的所有权和知识产权等全部权利。本产品受中国及其他国家的知识产权法、国际知识产权公约（包括但不限于著作权法、商标法、专利法等）的保护。所有未授予您的权利均被本公司保留，您不可以从本产品上移除本公司的版权标记或其他权利声明。



							1.2 软件所有权保留。



							您确定不享有本软件的所有权，本软件未被出售给用户，本公司保留本软件的所有权。



							2. 授权许可

							2.1 授权许可。



							本公司授予您一项非排他的、不可转让的、非商业性的、可撤销的许可，以下载、安装、备份和使用本产品。本公司授予您仅出于个人非商业目在移动设备上使用本产品，如果您希望将本产品用于其他非本公司授权的目的或其他商业目的，您必须另行取得本公司的单独书面许可。



							2.2 限制.



							除非就某些第三方软件软件有明文规定或适用法律允许，否则您不得在未取得本公司书面许可的情况下修改、翻译、反向汇编、反向工程、反编译本软件的部分或全部。



							3. 用户行为

							3.1
							如果您在使用本公司产品或服务的过程中发布相关用户内容，您需要对自己发布的所有用户内容负责。用户内容是指您发布或以其他方式使用本产品时产生的所有内容（例如：您的信息、声音、图片或其他内容）。您是您的用户内容唯一的责任人，您将承担因您的用户内容违法法律、侵犯第三方权益的所有法律责任。



							3.2 在使用过程中，您将承担因下述行为而产生的全部法律责任，本公司不对您的下述行为承担任何责任：



							破坏宪法所确定的基本原则的；

							危害国家安全、泄露国家秘密、颠覆国家政权、破坏国家统一的；

							损害国家荣誉和利益的；

							煽动民族仇恨、民族歧视，破坏民族团结的；

							破坏国家宗教政策，宣扬邪教和封建迷信的；

							散布谣言，扰乱社会秩序，破坏社会稳定的；

							散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的；

							侮辱或者诽谤他人，侵害他人合法权益的；

							含有法律、行政法规禁止的其他内容的。

							3.3 您同意不通过本产品从事下列行为：



							发布或分享电脑病毒、蠕虫、恶意代码、故意破坏或改变计算机系统或数据的软件；

							未经授权，收集其他用户的信息或数据，例如非法收集第三人的个人信息侵犯第三人隐私或其他合法民事权益；

							用自动化的方式恶意使用本产品，给服务器造成过度的负担或以其他方式干扰或损害本产品服务器和网络链接；

							在未授权的情况下，尝试访问本产品的服务器数据或通信数据；

							干扰、破坏本产品其他用户的使用；

							未经本公司授权，修改、破解、反编译、反汇编、逆向工程本产品，发布本产品的修改版、破解版等；

							3.4 费用。

							我们的大部产品或服务都是是免费的，包括但不限于个人上网或第三方（包括但不限于电信或移动通讯提供商）收取的通讯费、信息费等相关费用。



							4. 功能的调整、改进与升级

							我们可能对产品进行不时地调整、改进和增减，甚至下线我们部分产品，以不断适应我们的运营需要。任何本产品的更新版本或未来版本或者其他变更同样受到本协议约束。



							5. 无担保声明

							5.1
							本公司在发布本产品之前，已尽可能对产品进行了详尽的技术测试和功能测试，但鉴于电子设备、操作系统、网络环境的复杂性，本公司不能保证本产品会兼容所有用户的电子设备，也无法保证用户在使用本产品过程中能够持续不出现任何技术故障。



							5.2
							在法律允许的最大限度内，本公司无法对产品或服务做任何明示、暗示和强制的担保，包括但不限于软件的兼容性；产品一定满足您的需求或期望；或产品将不间断的、及时的、安全的、或无错误的运行。



							5.3
							由于网络环境的自由与开放特征，我们的产品或服可能会被第三方擅自修改、破解发布于互联网，建议用户从本公司的官方应用渠道，如官网、本公司已申请认证的第三方应用商店下载、安装我们的产品，我们不会对任何非官方版本承担任何责任。



							6. 赔偿

							6.1 赔偿。在你违反本协议或你所提供的信息侵犯第三方合法权益而导致直接或间接损失的情况下，你应当赔偿其他用户、本公司、第三方合作伙伴的所有损失、费用或支出。



							6.2 赔偿程序。可以通知你及时要求赔偿。然而,本公司未能通知不会减轻你的赔偿义务，除了在某种程度上，未能及时通知你给你造成了实质上的损害。



							6.3 额外的责任。你的赔偿义务不是本公司的唯一补救措施，除此之外可能本公司对你依据本协议采取其他补救措施，你的赔偿义务在本协议终止后仍存在。



							7. 不可抗力与责任限制

							7.1
							不可抗力：本协议有效期间，如若遭受不可抗力事件，任何一方可暂行中止履行本协议项下的义务直至不可抗力事件的影响消除，并且遭受方无需为此承担违约责任，但应及时将不可抗力事件及时通知对方，并尽最大努力克服该事件，减少损失的扩大。不可抗力指各方不能控制、不可预见或即使预见亦无法避免的事件且该事件足以妨碍、影响或延误任何一方根据本协议履行其全部或部分义务。该事件包括但不限于自然灾害、战争、法律法规变更、政府命令、计算机病毒、黑客攻击或基础电信运营商服务中断等。



							7.2
							损害限制：本公司及其分支，和所属的管理人员、董事、合伙人、雇员、承包商给你造成的所有损害赔偿额度均仅限于你使用产品支付的款额。你放弃对特殊、间接、附带或间接损害要求赔偿的权利，包括并不限于利润损失、收入、使用、或数据和应用的损失，即使本公司知道此类损失的可能性。



							8. 个人信息保护

							保护用户跟个人信息安全、维护用户隐私是我们一贯的理念，并且我们贯穿于所有产品或服务的立项、开发和运营过程。为不断优化用户体验，向用户提供更加个性化、智能化的内容与服务，我们会收集您的个人信息与非个人信息。您在使用特定的产品时，可以查看关于该产品的隐私说明以及我们的《隐私政策》，了解关于我们收集信息的内容、使用目的以及如何保护你的信息安全，该《产品隐私说明》和《隐私政策》均构成本协议的一部分。



							9. 其他

							9.1 通知。



							所有有关本协议以及隐私政策的疑问、通知、要求或请求,应当用中文写作并发送至本公司邮箱：【kefu@ludashi.com】



							9.2 本协议的修改。



							由于业务的拓展、调整或法规变化等原因，本公司可能会适时修改本协议至被法律所允许的程度。如果调整会对您的权利与义务造成重大影响，我们会尽可能通过电子邮件、应用内通知等方式告知您。我们建议您定期访查看我们的网站和移动应用程序，关注本协议的任何变化。在本协议修改后您继续使用本产品代表您接受修改后的协议内容。



							9.3 适用法律和管辖法院。



							执行本协议和所有程序引起的纠纷适用法律为中华人民共和国法律、解释。由本协议引起的所有纠纷由我们附属公司的住所地法院管辖。
						</view>
						<view class="font-tip text-right mt-4">哈尔滨市松北区防范和处置非法集资</view>
						<view class="font-tip text-right mt-1">工作领导小组办公室</view>
						<view class="font-tip text-right mt-1">2022年11月2日</view>
					</scroll-view>
				</view>

				<u-button slot="confirmButton" text="已知晓" @click="noticeShow = false" type="success" shape="circle">
				</u-button>
			</u-modal>
		</view>
	</view>
</template>

<script>
	import {
		baseFont,
		mcStepKey
	} from '@/common/config.js';
	import {
		getAccessToken,
		getVerifyToken,
		updateImageToRepository,
		realNameAuth,
		match,
		resultNameAuth
	} from '@/common/baiduApi.js';
	import Autograph from '@/component/autograph/autograph.vue';
	import {
		pathToBase64
	} from 'image-tools';
	import {
		formatReserve
	} from '@/util/common.js';
	import {
		checkSave
	} from '@/common/api/mcRegister.js';
	import {
		uploadImage
	} from '@/common/api/common.js';

	export default {
		components: {
			Autograph,
		},
		data() {
			return {
				preStep: mcStepKey.step2,
				currentStep: mcStepKey.step3,
				nextStep: mcStepKey.step3,
				labelStyle: {
					fontSize: baseFont + 'upx',
					marginBottom: '20upx'
				},
				form: {
					verifyToken: '',
					name: null,
					idCardNo: null,
					idCardPositiveUrl: null,
					idCardFaceUrl: null,
					idCardBackUrl: null,
					bankCardPositiveUrl: null,
					bankCardBackUrl: null,
					bankCardNo: null,
					name1: null,
					idCard1No: null,
					idCard1PositiveUrl: null,
					idCard1FaceUrl: null,
					idCard1BackUrl: null,
					bankCard1PositiveUrl: null,
					bankCard1BackUrl: null,
					bankCard1No: null,
					deathCertificateUrl: null,
					acts: null,
					relation: null,
					registeredResidence: [],
					bills: [],
					videoUrl: null,
					videoFaceUrl: null,
					sign: null,
					oneself: true,
					sign: null,
					contactNumber: null,
					caseList: [],
					address: null,
					agree: false,
					fillFace: null,
					resultImgUrl: '',
					rebateRadio:true
				},
				signShow: false,
				cardFaceBase64: '',
				tipShow: false,
				tipText: '请确保是集资参与人本人操作，并不要处在强光或弱光环境下。',
				signTipShow: false,
				signTipShows: false,
				signTipText: '如您对以上信息无异议，请点击确认按钮；若有异议，请点击取消按钮。',
				noticeShow: false,
				radio: true,
				tongyiTipShow: false
			};
		},
		computed: {
			currentStepIndex() {
				return this.oneself ? 2 : 3;
			},
		},
		onLoad(options) {

			this.checkMcPage(options);
			const {
				index = {}, step0_5 = {}, step1 = {}, step2 = {}, step1_5 = {}
			} = this.$getMcInfo(this.idCard);
			this.form = {
				...this.form,
				...index,
				...step1,
				...step2,
			};
			// 办理人逻辑判断
			if (this.oneself) {
				this.cardFaceBase64 = step1.idCardFaceBase64;
			} else {
				this.cardFaceBase64 = step1_5.idCard1FaceBase64;
				this.form = {
					...this.form,
					...step1_5,
				};
			}
			const {
				resultList = []
			} = index;
			this.form.id = resultList[0].id
			this.form.turnWhite = resultList[0].turnWhite
			if (resultList.length === 0) {
				this.toMcIndex();
			}
			// 白名单
			if (resultList[0].type === 1) {
				this.form.caseList = resultList.map(item => {
					return {
						cid: item.cid
					}
				})
			} else if (resultList[0].type === 2 || resultList[0].type === 3) {
				this.toMcIndex();
			} else {
				// 数据补录
				this.form.caseList = step0_5.resultList
			}

			if (resultList[0].turnWhite) {
				uni.request({
					url: resultList[0].idCardFaceUrl,
					method: 'GET',
					responseType: 'arraybuffer',
					success: async res => {
						let base64 = wx.arrayBufferToBase64(res.data);
						this.cardFaceBase64 = base64;
					}
				});
			}

			if (options.check && options.check == this.form.check) {
				if (resultList[0].type == 1) {
					let that = this;

					//关闭页面滚动，
					that.stop();

					that.signShow = true;
					that.$nextTick(() => {
						that.$refs.sign.autograph();
						resultNameAuth(that.form.verifyToken, that.form.accessToken).then(imgUrl => {
							if (imgUrl.data.success) {
								that.form.resultImgUrl = imgUrl.data.result.images[0]
							}
						})
					});
				} else if (resultList[0].type == 4) {
					checkSave(this.form).then(res => {
						const cid = this.form.caseList.map(item => item.cid).join(',')
						this.toMcResult(res.data.state, res.data.reason, this.idCard, cid);
					});
				}
			} else {
				this.tipShow = true;
			}
		},
		methods: {
			// 单选
			changeRadio(e) {
				this.radio = e
				console.log(e)
			},
			// 阻止页面滚动
			stop() {
				var box = function(e) {
					passive: false;
				};
				document.body.style.overflow = 'hidden';
				document.addEventListener('touchmove', box, false);
			},
			// 允许页面滚动
			move() {
				var box = function(e) {
					passive: false;
				};
				document.body.style.overflow = ''; // 出现滚动条
				document.removeEventListener('touchmove', box, false);
			},
			formatNum(num) {
				if (num) {
					return formatReserve(num);
				} else {
					return 22.24;
				}
			},
			confirm(bool) {
				// 签名结束，放开页面滚动
				this.move();
				this.rebateRadio = this.signTipShow
				this.signShow = false;
				if (bool) {
					this.form.sign = this.$refs.sign.signature;
					checkSave(this.form).then(res => {
						const cid = this.form.caseList.map(item => item.cid).join(',')
						this.toMcResult(res.data.state, res.data.reason, this.idCard, cid);
					});
				}
			},
			doSign() {
				let that = this;
				that.signShow = true;
				that.$nextTick(() => {
					that.$refs.sign.autograph();
				});
			},
			goNotSign() {
				this.signTipShows = true
			},
			toBackStep(){
				this.signTipShow = true
				this.signTipShows = false
			},
			async goSign() {
				this.signTipShow = false
				this.signTipShows = false
				let that = this;
				that.accessToken = await getAccessToken();
				that.verifyToken = await getVerifyToken(that.accessToken);
				that.face1 = this.cardFaceBase64.replace(/^data:image\/\w+;base64,/, '');
				// let imgRes = await updateImageToRepository(baseImage, accessToken, verifyToken);
				setTimeout(() => {
					uni.chooseImage({
						count: 1,
						sizeType: ['compressed'],
						sourceType: ['camera'],
						success(res) {
							// uni.$u.toast('选择完图片');
							uni.showLoading({
								title: '处理中，请稍后...',
							});
							let file = res.tempFiles[0];
							if (file.size > 1024 * 1024 * 4) {
								that.compressImage(file);
							} else {
								const tempFilePaths = res.tempFilePaths;
								pathToBase64(tempFilePaths[0]).then(path => {
									that.baseImage2 = path.replace(/^data:image\/\w+;base64,/,
										'');
									if (that.baseImage2) {
										// uni.$u.toast('1比1');
										// that.goMath(that.face1, that.baseImage2);
										// 保存一比一拍照的图片
										// const { fileName } = await uploadImage(that.baseImage2);
										uploadImage(that.baseImage2).then(response => {
											that.form.fillFace = response.fileName
											that.goMath(that.face1, that.baseImage2);
										})
									}
								});
							}
						},
						fail: error => {
							uni.$u.toast(JSON.stringify(error));
						},
					});
				});
			},
			goMath(face1, face2) {
				let that = this;
				match(face1, face2, that.accessToken).then(res => {
					if (res.data.error_code == 0) {
						// uni.$u.toast('一比一');
						uni.showLoading({
							title: '正在人像一比一，请稍后...',
						});
						if (res.data.result.score >= 60) {
							that.uploadImgRepo(face2);
						}
					} else {
						uni.$u.toast('请确保本人操作！');
					}
				});
			},
			uploadImgRepo(base64) {
				// uni.$u.toast('入库');
				uni.showLoading({
					title: '正在人像入库，请稍后...',
				});
				let that = this;
				const sucess = this.getMcBaiduSuccessPage(this.form.check);
				updateImageToRepository(base64, that.accessToken, that.verifyToken).then(imgRes => {
					if (imgRes.data.success) {
						uni.$u.toast('打开活体检测');
						const idCard = that.idCard;
						that.form.verifyToken = that.verifyToken
						that.form.accessToken = that.accessToken
						that.saveMcInfo(idCard);
						realNameAuth(that.verifyToken, sucess, '');

					} else {
						uni.$u.toast(imgRes.data.message);
					}
				});
			},
			compressImage(urlData) {
				// uni.$u.toast('压缩');
				// uni.showLoading({
				// 	title: '压缩中...'
				// })
				uni.showLoading({
					title: '正在压缩人像，请稍后...',
				});
				let _this = this;
				uni.getImageInfo({
					src: urlData.path,
					success(res) {
						let originWidth = res.width; //图片原始宽
						let originHeight = res.height; //图片原始高
						let maxWidth = 800;
						let maxHeight = 800;
						let img = new Image();
						img.src = res.path;
						let canvas = document.createElement('canvas');
						let ctx = canvas.getContext('2d');
						// 目标尺寸
						let targetWidth = originWidth;
						let targetHeight = originHeight;
						if (originWidth > maxWidth || originHeight > maxHeight) {
							if (originWidth / originHeight > maxWidth / maxHeight) {
								// 更宽，按照宽度限定尺寸
								targetWidth = maxWidth;
								targetHeight = Math.round(maxWidth * (originHeight / originWidth));
							} else {
								targetHeight = maxHeight;
								targetWidth = Math.round(maxHeight * (originWidth / originHeight));
							}
						}

						canvas.width = targetWidth;
						canvas.height = targetHeight;
						// 图片压缩
						ctx.drawImage(img, 0, 0, targetWidth, targetHeight);
						// canvas对图片进行缩放 0.3是我定义的图片质量，
						let base64 = canvas.toDataURL(urlData.type, 0.3).replace(/^data:image\/\w+;base64,/, '');

						// // uni.hideLoading()
						// _this.goMath(_this.face1, base64.split(',')[1]);
						// 保存一比一拍照人像
						// const { fileName } = await uploadImage(base64);
						uploadImage(base64).then(response => {
							_this.form.fillFace = response.fileName

							// uni.hideLoading()
							_this.goMath(_this.face1, base64);
						})
					},
					fail() {
						uni.showModal({
							title: '提示',
							content: '图片压缩失败',
							showCancel: false,
						});
					},
				});
			},
			// checkboxChange(e) {
			// 	this.form.agree = e[0]
			// }
		},
	};
</script>

<style scoped lang="scss">
	.cell-page {
		padding-bottom: 20px;
	}

	.myCheckbox {
		font-size: 20px;
	}
</style>
